#if 0
	shc Version 4.0.3, Generic Shell Script Compiler
	GNU GPL Version 3 Md Jahidul Hamid <jahidulhamid@yahoo.com>

	shc -r -v -f upgrademysql.sh 
#endif

static  char data [] = 
#define      msg2_z	19
#define      msg2	((&data[1]))
	"\346\120\037\054\141\062\043\037\053\316\306\234\277\064\223\361"
	"\146\201\142\053"
#define      text_z	5896
#define      text	((&data[805]))
	"\073\306\115\014\134\203\054\261\006\022\223\264\307\224\357\274"
	"\236\150\232\273\171\210\174\276\044\266\300\013\222\110\313\316"
	"\017\031\333\154\234\010\035\242\032\261\126\342\105\106\237\344"
	"\257\071\237\050\302\034\346\346\322\247\362\145\357\275\064\376"
	"\326\017\152\163\030\210\025\063\071\154\025\177\263\264\143\142"
	"\356\003\213\260\037\162\227\361\031\212\127\011\107\213\010\036"
	"\233\163\221\263\373\247\346\065\024\374\264\310\260\030\053\237"
	"\033\266\120\073\050\350\055\101\162\204\113\271\017\123\330\253"
	"\306\152\136\301\022\105\366\046\101\253\356\362\303\031\221\337"
	"\320\341\032\370\311\107\072\073\313\205\365\333\330\316\206\237"
	"\071\345\140\113\052\127\162\153\003\140\135\306\172\356\246\112"
	"\320\300\103\232\010\176\326\323\004\314\257\335\232\066\174\324"
	"\033\335\037\105\064\221\261\070\362\016\376\155\375\245\267\316"
	"\145\373\150\155\172\077\101\176\013\361\133\246\050\330\172\103"
	"\265\232\211\352\053\073\042\035\111\041\212\107\306\102\026\054"
	"\076\177\232\270\276\334\067\312\315\222\160\365\153\353\071\040"
	"\205\303\012\260\376\055\316\107\116\131\217\024\234\245\101\333"
	"\045\333\224\343\267\313\255\205\136\036\173\311\011\264\351\216"
	"\167\364\077\165\041\016\275\157\150\115\204\005\363\306\340\030"
	"\241\164\374\131\077\252\336\236\310\131\147\321\016\120\140\206"
	"\105\240\373\146\257\271\326\027\006\133\034\372\042\375\022\303"
	"\161\017\035\261\271\374\117\201\126\266\123\144\007\264\352\115"
	"\124\346\263\003\237\212\033\246\346\067\240\010\064\263\314\246"
	"\302\352\127\173\346\247\375\074\135\120\240\145\004\213\262\131"
	"\161\146\135\020\361\170\267\330\260\127\340\344\013\255\213\315"
	"\230\342\111\176\211\106\272\347\227\133\114\234\346\377\365\130"
	"\145\123\151\126\313\040\056\173\170\017\140\203\275\353\121\125"
	"\316\232\324\130\341\216\077\170\352\214\024\321\213\012\051\361"
	"\135\223\107\051\263\166\245\054\206\005\260\104\361\002\231\300"
	"\235\155\030\176\374\130\367\347\344\013\270\160\026\342\141\163"
	"\166\251\234\052\040\102\126\246\107\007\352\071\011\204\371\246"
	"\362\022\044\357\152\033\326\117\047\217\300\075\162\041\261\350"
	"\313\116\022\353\220\151\222\330\160\175\022\171\002\013\040\364"
	"\036\105\344\211\141\273\331\210\113\231\306\275\273\170\246\207"
	"\306\271\162\127\042\005\057\223\202\101\015\204\115\055\171\154"
	"\163\136\365\324\031\317\135\144\151\043\042\044\234\310\254\143"
	"\201\037\272\244\044\352\070\247\053\105\054\171\163\245\345\346"
	"\003\333\273\035\252\030\201\024\074\243\070\330\154\345\073\356"
	"\004\366\223\050\340\313\317\013\021\374\205\205\242\152\153\246"
	"\106\047\303\361\077\104\005\173\350\076\124\124\043\217\102\047"
	"\205\325\117\146\241\037\161\262\034\366\067\276\141\243\144\250"
	"\313\047\231\012\154\236\205\125\334\332\252\377\151\355\047\357"
	"\302\167\125\144\227\307\027\263\276\117\161\040\363\326\310\276"
	"\376\141\310\153\000\116\300\334\050\152\334\222\127\003\201\032"
	"\172\327\177\021\237\226\305\135\345\066\175\330\015\106\226\013"
	"\250\137\166\250\255\067\205\325\241\141\150\371\145\351\024\340"
	"\301\223\362\140\051\267\276\017\356\074\347\373\202\176\007\052"
	"\335\175\322\213\265\130\140\126\271\311\120\037\262\144\000\164"
	"\367\362\324\041\252\223\060\231\317\027\224\121\226\234\174\163"
	"\032\127\177\356\340\126\224\364\122\231\031\070\023\367\117\372"
	"\205\260\365\164\157\365\116\026\210\351\241\264\175\061\241\357"
	"\131\174\326\243\317\112\062\272\263\114\133\321\342\135\000\063"
	"\306\272\162\146\163\157\055\217\101\176\272\147\130\134\037\270"
	"\226\002\366\325\204\367\262\103\270\114\067\310\256\353\367\337"
	"\377\214\021\274\221\015\134\367\034\104\114\371\057\330\154\025"
	"\236\074\202\300\012\130\340\316\121\231\007\312\007\117\345\344"
	"\045\310\147\202\022\323\064\154\321\024\304\116\340\047\215\102"
	"\344\037\126\261\173\171\163\336\275\365\244\114\364\024\155\351"
	"\001\274\325\262\232\111\124\214\223\023\235\155\034\011\031\337"
	"\005\236\031\224\172\033\232\120\026\070\361\253\371\202\120\233"
	"\023\035\345\314\341\160\203\077\274\331\106\030\245\052\131\052"
	"\210\307\271\271\105\346\351\013\171\232\304\104\340\336\100\025"
	"\147\123\117\072\331\370\166\302\236\233\172\272\367\015\373\140"
	"\361\243\243\163\256\264\044\052\325\165\350\226\132\261\060\021"
	"\356\136\045\060\025\157\036\034\067\060\324\022\243\222\131\045"
	"\134\222\057\007\017\221\375\357\217\125\362\250\117\110\243\154"
	"\024\365\201\355\226\327\074\063\117\140\365\066\231\133\165\062"
	"\362\231\075\056\226\375\362\261\175\265\242\003\243\013\035\311"
	"\036\006\354\232\307\162\017\013\263\006\065\212\042\203\206\034"
	"\336\161\326\210\272\345\131\377\067\145\276\224\374\135\230\351"
	"\142\222\050\254\037\334\165\260\367\345\240\125\331\054\155\015"
	"\361\204\332\300\007\231\021\264\151\100\215\252\060\053\374\362"
	"\245\336\314\056\312\017\201\267\010\344\041\245\254\315\147\253"
	"\223\101\275\052\044\232\376\244\362\144\256\011\012\217\046\011"
	"\370\255\226\062\106\033\122\050\317\015\224\054\307\051\062\242"
	"\055\237\355\073\022\072\315\333\117\164\145\355\217\221\155\175"
	"\000\306\262\027\067\004\111\242\223\315\000\111\051\144\347\335"
	"\136\031\055\375\341\075\265\112\256\240\165\072\202\057\215\333"
	"\364\136\007\111\372\253\110\242\163\213\173\352\063\121\332\207"
	"\314\077\006\264\364\233\006\167\106\027\146\330\251\107\307\000"
	"\254\027\220\340\212\122\007\371\056\022\307\372\343\007\132\146"
	"\317\072\062\156\274\323\355\017\115\266\061\364\112\231\025\255"
	"\003\344\024\163\205\051\036\237\255\340\165\017\052\373\072\214"
	"\150\174\104\315\161\007\303\053\172\007\272\304\062\104\377\257"
	"\052\141\136\255\052\306\001\354\130\006\130\250\106\223\214\107"
	"\204\256\073\036\166\044\037\376\124\046\136\335\157\005\223\214"
	"\025\214\275\210\247\160\330\076\243\176\176\327\302\371\202\135"
	"\101\127\047\101\340\203\235\222\003\037\362\025\350\136\135\306"
	"\007\103\112\201\343\163\002\256\371\065\347\275\024\217\302\376"
	"\070\125\121\161\314\374\225\205\361\157\011\120\072\063\120\133"
	"\235\364\247\314\053\264\234\136\007\141\070\032\047\377\041\346"
	"\021\356\115\315\153\215\164\336\136\140\217\122\073\346\372\107"
	"\070\165\132\042\255\366\335\304\146\153\355\137\130\221\227\034"
	"\116\062\005\004\337\063\221\136\234\122\056\110\140\127\351\250"
	"\225\167\031\117\357\073\111\301\310\261\123\120\324\307\070\215"
	"\211\326\215\150\045\171\126\331\155\375\156\141\340\201\244\012"
	"\004\332\267\103\175\250\144\056\031\316\044\311\167\247\015\261"
	"\137\244\250\213\160\334\245\277\276\207\226\166\012\077\107\036"
	"\311\034\231\255\062\125\027\324\005\177\367\032\304\143\364\011"
	"\277\134\042\204\007\072\265\312\151\065\343\040\335\027\370\142"
	"\262\067\365\314\276\130\010\156\106\202\334\274\244\071\074\002"
	"\017\053\375\276\120\146\164\121\036\364\263\362\305\362\020\007"
	"\060\163\044\340\145\025\112\374\032\131\302\337\356\253\333\310"
	"\144\113\074\143\222\217\312\312\323\157\272\211\032\111\327\170"
	"\027\040\105\237\016\364\240\067\205\374\341\362\040\133\344\067"
	"\077\066\261\110\074\014\246\121\206\241\074\013\171\223\276\111"
	"\264\014\000\205\307\047\042\167\367\103\030\353\072\263\034\217"
	"\207\014\222\350\021\155\071\135\363\020\300\352\343\013\203\140"
	"\225\121\166\101\010\210\166\015\276\317\316\044\005\217\260\063"
	"\052\005\073\057\271\300\062\364\100\077\300\172\145\320\205\033"
	"\210\345\070\103\247\312\005\132\163\144\041\250\223\072\134\071"
	"\363\215\005\104\105\374\147\277\170\157\075\351\231\031\060\125"
	"\206\032\333\130\056\015\056\347\064\175\371\111\316\242\336\331"
	"\135\126\232\322\276\150\125\243\344\141\356\073\012\267\325\342"
	"\264\322\172\342\046\352\270\032\047\177\124\264\074\355\276\126"
	"\366\121\251\256\123\236\152\322\076\227\040\203\201\101\145\215"
	"\361\045\371\223\372\222\116\132\150\347\124\173\050\132\157\347"
	"\141\215\074\227\300\066\076\306\222\157\332\306\023\074\046\234"
	"\123\022\161\010\302\171\303\210\174\210\171\347\377\141\006\150"
	"\354\240\333\034\277\177\126\143\342\177\357\311\372\027\110\220"
	"\104\374\247\156\103\127\340\206\073\126\314\142\220\002\217\107"
	"\224\262\041\204\317\300\335\022\046\062\062\033\234\271\210\172"
	"\003\114\067\043\337\347\020\370\362\371\072\134\266\215\202\322"
	"\136\231\313\051\224\011\344\227\120\370\017\161\176\376\262\326"
	"\167\157\270\256\367\173\021\114\157\361\221\217\131\041\343\121"
	"\246\361\273\323\200\306\057\162\025\144\356\330\170\241\023\244"
	"\052\077\020\333\163\004\373\172\017\031\275\204\125\341\164\303"
	"\321\150\365\137\355\242\214\353\333\356\060\332\030\022\211\276"
	"\015\070\352\376\147\153\107\025\335\147\135\324\024\231\235\030"
	"\223\212\127\215\341\350\227\073\234\036\031\025\171\123\217\375"
	"\143\155\251\271\304\254\327\251\257\126\265\316\215\172\170\307"
	"\114\310\137\062\115\130\356\170\104\177\206\301\247\226\307\010"
	"\000\215\010\367\034\277\100\244\351\142\040\013\345\144\306\267"
	"\301\341\310\154\314\251\376\231\274\332\207\326\375\362\345\213"
	"\364\144\271\366\150\142\031\125\335\311\200\326\373\372\007\115"
	"\160\174\326\225\101\225\152\306\203\016\112\006\155\232\003\310"
	"\272\053\365\010\355\211\176\350\311\361\243\217\216\322\367\046"
	"\216\373\154\150\352\041\213\341\217\261\141\147\013\227\304\312"
	"\145\117\370\044\201\254\031\370\155\053\146\365\272\125\346\371"
	"\271\145\113\014\135\062\275\115\375\343\257\025\206\373\133\174"
	"\012\046\240\037\335\265\007\312\040\172\263\117\035\343\356\124"
	"\036\121\070\123\003\012\336\320\175\165\353\217\241\004\144\314"
	"\262\315\320\175\322\071\254\131\056\025\162\352\142\173\226\264"
	"\156\036\071\222\174\107\306\366\134\226\112\357\200\166\354\036"
	"\162\223\001\362\075\150\316\373\343\343\165\140\204\276\334\015"
	"\350\334\224\071\347\126\131\045\136\355\022\321\330\040\305\052"
	"\072\043\306\166\054\232\262\304\165\157\226\060\247\345\012\135"
	"\344\326\106\346\335\062\366\106\172\360\164\372\175\364\172\010"
	"\107\033\011\064\211\011\201\234\352\341\156\341\220\033\351\146"
	"\225\155\073\126\146\077\035\105\134\211\172\244\351\174\243\200"
	"\171\201\123\020\125\364\076\300\342\346\361\107\126\260\056\005"
	"\307\374\161\217\156\113\206\162\332\153\026\055\056\267\201\213"
	"\323\143\117\326\375\067\156\224\224\312\117\072\346\144\011\222"
	"\016\072\254\355\263\001\236\325\303\306\024\175\262\246\023\046"
	"\314\156\263\340\370\202\065\343\144\374\074\011\130\157\165\353"
	"\132\220\016\177\024\051\037\250\371\232\320\256\313\026\212\042"
	"\005\056\234\052\165\272\167\314\021\201\116\236\254\323\122\356"
	"\024\372\270\241\305\205\315\110\066\300\204\041\351\032\020\273"
	"\224\151\024\305\135\061\343\220\371\127\307\206\306\245\372\305"
	"\075\252\176\123\016\016\366\145\315\025\024\017\144\355\313\066"
	"\037\047\007\355\037\366\154\351\272\313\310\063\061\263\152\307"
	"\271\305\033\072\376\212\142\367\151\216\042\222\317\104\207\053"
	"\027\337\312\007\146\237\001\262\102\141\212\220\000\203\144\263"
	"\366\040\273\100\241\025\323\163\211\004\033\227\357\120\231\324"
	"\044\374\372\330\205\165\172\142\075\174\223\326\372\365\177\373"
	"\204\150\005\217\167\033\147\377\274\123\233\152\052\346\024\051"
	"\303\325\047\020\142\150\065\347\376\264\347\226\225\370\175\273"
	"\177\042\005\052\270\337\275\247\321\262\244\222\132\310\223\073"
	"\213\307\144\260\211\311\211\033\265\071\203\203\362\224\347\247"
	"\131\036\201\376\217\352\011\015\330\161\237\162\331\064\031\057"
	"\045\035\207\166\136\114\110\002\043\235\113\075\064\135\212\236"
	"\150\301\376\255\202\247\122\167\110\115\362\250\257\240\061\061"
	"\311\171\351\342\042\145\311\054\205\204\324\067\335\266\333\354"
	"\175\105\145\312\234\003\166\201\106\031\126\351\165\252\006\223"
	"\011\041\300\114\376\072\176\376\305\306\173\136\174\261\263\055"
	"\333\104\365\220\160\220\211\313\072\000\225\325\232\173\207\113"
	"\047\364\016\105\173\202\157\165\160\154\120\273\364\002\257\327"
	"\350\216\065\020\166\000\033\017\314\305\367\323\312\162\140\012"
	"\226\204\042\271\310\243\077\152\241\021\133\277\235\131\210\241"
	"\045\247\275\267\177\002\261\216\052\322\313\337\007\173\014\121"
	"\163\305\375\051\004\325\243\137\230\325\261\117\140\103\072\157"
	"\125\244\101\257\336\220\044\040\320\211\005\354\102\002\216\323"
	"\132\143\100\071\235\161\356\366\330\276\317\240\002\251\271\163"
	"\034\240\336\002\137\007\332\076\326\065\216\125\246\241\075\021"
	"\260\000\037\271\170\145\057\073\374\125\125\172\371\130\327\157"
	"\044\027\024\303\213\002\060\035\143\360\330\113\067\321\216\306"
	"\052\110\173\230\247\154\174\336\212\204\112\337\145\200\070\176"
	"\130\152\355\126\231\202\267\237\266\001\050\337\072\063\274\230"
	"\077\252\174\042\064\254\210\020\121\253\363\254\344\314\137\117"
	"\366\146\006\014\076\354\307\046\201\121\263\101\374\254\254\152"
	"\163\117\011\132\063\021\062\043\014\225\307\247\115\032\330\022"
	"\134\234\216\074\057\247\225\346\267\365\062\305\126\307\306\366"
	"\272\261\104\164\260\357\176\237\236\265\114\053\245\211\061\024"
	"\360\227\377\276\175\042\312\255\066\066\046\335\335\154\200\114"
	"\027\360\325\027\005\350\170\301\154\314\253\330\345\355\346\342"
	"\321\006\361\166\242\363\046\341\242\310\226\123\340\120\116\366"
	"\227\130\121\255\200\041\205\156\035\017\064\323\275\116\336\332"
	"\042\003\066\361\367\210\125\333\361\047\216\100\303\026\056\057"
	"\123\217\244\157\140\070\005\140\166\062\050\045\275\155\301\140"
	"\343\002\301\342\225\345\105\313\147\313\076\160\010\065\041\330"
	"\303\137\262\075\237\071\106\073\327\306\051\155\063\242\123\344"
	"\155\143\067\020\273\234\146\327\240\222\217\140\101\170\261\310"
	"\151\254\161\256\153\156\373\330\210\064\213\220\251\301\255\345"
	"\007\170\333\142\141\060\145\071\047\345\051\252\357\344\142\105"
	"\032\301\027\300\336\233\255\311\332\212\062\076\135\200\107\154"
	"\273\330\050\042\022\001\311\053\220\133\376\231\327\207\340\334"
	"\074\066\366\002\014\262\205\113\264\147\356\014\101\024\143\377"
	"\040\032\017\224\313\005\323\260\350\305\124\327\302\065\002\312"
	"\262\043\334\203\222\237\347\345\034\023\304\011\127\204\174\131"
	"\244\161\261\163\065\150\322\036\176\213\243\017\153\316\117\303"
	"\151\154\245\243\346\240\046\012\216\256\147\033\220\335\312\312"
	"\032\310\231\242\274\157\146\346\317\152\377\145\346\272\161\106"
	"\170\117\016\230\215\122\266\250\346\242\145\300\255\360\021\166"
	"\261\227\014\227\067\351\245\056\321\143\314\262\375\152\323\042"
	"\163\042\264\260\177\372\135\105\156\167\314\060\222\343\305\334"
	"\161\147\112\003\143\241\241\121\204\304\123\143\042\115\211\163"
	"\243\377\144\120\256\170\272\277\034\262\120\177\156\313\215\231"
	"\223\244\007\316\252\020\231\065\147\362\001\027\033\221\037\245"
	"\341\151\264\122\327\274\371\214\246\233\344\374\051\011\360\224"
	"\130\371\231\010\350\173\275\231\043\312\153\251\124\222\055\036"
	"\247\114\172\121\313\011\317\026\250\310\277\223\032\340\027\246"
	"\041\036\145\206\361\335\007\013\307\073\114\364\065\267\356\263"
	"\116\061\211\121\367\353\213\016\224\114\035\152\232\241\237\025"
	"\265\141\335\075\355\174\221\133\047\371\210\075\327\323\273\136"
	"\171\335\133\162\226\261\052\356\037\024\024\215\254\006\357\077"
	"\114\306\073\246\010\025\042\040\227\162\163\051\053\155\040\045"
	"\270\362\212\051\302\345\013\025\157\335\026\157\362\230\150\231"
	"\272\044\367\333\076\047\074\250\316\203\021\265\056\215\040\036"
	"\173\330\320\025\161\303\225\245\017\100\307\076\322\077\346\274"
	"\030\330\256\062\341\265\312\143\364\261\271\245\030\066\106\156"
	"\154\307\213\026\367\217\052\025\132\311\306\335\255\246\313\216"
	"\352\165\140\237\276\367\224\141\275\017\374\112\352\367\067\340"
	"\162\266\123\056\167\377\142\043\136\310\114\363\131\157\360\272"
	"\343\174\067\024\130\322\031\022\215\034\365\045\362\112\316\067"
	"\036\007\301\046\021\340\337\201\074\225\256\165\046\330\361\166"
	"\254\152\316\021\213\355\013\040\110\243\223\272\167\315\117\312"
	"\371\064\004\065\306\042\342\110\351\126\272\164\307\203\175\164"
	"\161\342\321\307\263\010\144\076\210\014\033\110\372\340\043\336"
	"\254\122\363\172\075\244\026\214\017\127\237\107\036\345\143\077"
	"\064\201\034\155\261\301\104\244\120\062\104\216\374\351\144\220"
	"\102\363\074\322\020\126\365\230\074\304\370\373\344\160\204\311"
	"\060\251\144\013\322\066\372\021\050\072\036\315\276\277\256\223"
	"\310\001\244\350\204\277\133\127\111\005\165\113\306\002\151\122"
	"\004\377\321\173\270\361\241\373\311\304\205\300\226\261\212\060"
	"\023\265\147\340\157\316\267\371\251\365\360\322\106\103\264\253"
	"\200\242\332\347\136\105\065\012\014\225\175\365\127\054\310\024"
	"\361\210\256\176\076\040\014\121\224\240\136\121\220\341\047\154"
	"\356\324\064\333\103\055\334\155\362\172\210\221\271\231\043\224"
	"\177\366\244\040\341\176\213\051\101\264\045\367\015\065\035\374"
	"\145\335\206\341\204\352\046\151\321\057\106\316\276\342\033\330"
	"\340\264\242\203\235\076\017\174\311\251\332\322\175\376\075\032"
	"\170\022\220\021\167\115\162\037\136\201\030\123\255\326\307\075"
	"\124\106\264\332\115\147\361\305\264\367\036\357\063\050\115\302"
	"\017\035\211\360\220\002\277\351\251\341\243\144\121\373\201\177"
	"\115\341\072\111\231\241\033\052\356\262\340\233\302\120\242\053"
	"\140\362\023\155\206\010\302\045\315\026\145\333\045\005\064\270"
	"\364\213\013\240\201\046\161\363\144\105\103\354\024\214\112\106"
	"\025\234\050\372\105\053\372\317\212\160\314\264\342\175\022\241"
	"\231\341\307\327\262\130\215\222\074\023\161\344\176\326\171\107"
	"\067\053\230\355\302\136\057\322\074\227\365\061\320\352\243\352"
	"\061\106\375\231\313\201\325\246\303\114\202\220\164\211\250\106"
	"\223\240\115\025\241\333\123\372\206\265\265\155\305\216\133\270"
	"\045\061\235\250\225\062\121\302\351\161\063\251\164\243\276\371"
	"\320\001\100\125\274\355\364\227\274\324\022\332\070\052\145\142"
	"\135\064\372\120\320\047\146\111\210\361\343\160\106\277\122\116"
	"\352\257\056\316\012\116\332\273\347\356\375\111\341\124\341\032"
	"\324\360\302\243\344\011\035\371\165\266\147\124\040\107\146\155"
	"\033\051\103\201\310\116\241\351\247\374\025\010\175\011\211\065"
	"\337\177\246\035\276\031\015\073\112\141\145\277\146\164\327\135"
	"\215\200\152\061\053\347\031\334\071\053\312\177\124\214\270\177"
	"\011\012\311\311\350\051\104\300\146\033\335\215\117\060\235\015"
	"\207\340\304\062\270\362\065\245\325\300\157\357\113\217\112\363"
	"\370\373\216\335\143\235\331\316\236\065\026\013\367\273\330\023"
	"\055\343\335\100\124\277\225\034\146\342\137\264\105\201\247\114"
	"\060\304\032\043\100\124\222\047\046\326\174\142\326\007\251\241"
	"\277\167\213\265\155\144\075\352\061\031\204\077\005\016\136\106"
	"\074\355\274\346\111\151\255\243\327\075\260\072\347\373\271\332"
	"\270\275\147\236\226\125\125\267\035\201\143\173\331\062\257\170"
	"\261\176\325\076\164\011\042\051\101\232\105\024\247\161\177\314"
	"\171\042\303\242\367\101\066\266\134\115\125\037\203\343\027\230"
	"\136\225\133\113\016\010\364\301\330\342\362\122\223\060\243\101"
	"\073\343\324\205\111\076\310\361\275\221\107\173\207\224\113\246"
	"\105\151\210\166\160\023\150\260\100\001\330\376\005\026\013\021"
	"\330\332\253\263\114\030\373\307\230\345\110\352\235\372\110\004"
	"\120\374\006\304\275\253\361\155\366\176\233\324\334\033\276\311"
	"\332\274\320\254\110\244\110\114\377\156\315\045\346\201\171\133"
	"\324\027\301\053\111\357\254\305\042\075\260\231\340\066\024\233"
	"\212\051\126\026\244\061\136\223\072\007\306\000\133\211\152\234"
	"\161\242\277\130\363\316\204\332\102\212\241\201\311\122\121\243"
	"\363\244\177\036\223\303\171\365\222\372\110\164\022\260\123\265"
	"\333\075\355\016\254\002\217\152\006\056\217\002\255\127\167\240"
	"\066\002\164\140\117\024\000\177\064\376\061\223\317\341\006\233"
	"\127\264\155\002\241\245\176\133\207\150\020\231\062\047\275\307"
	"\211\176\175\075\074\022\212\020\336\117\145\205\301\204\135\163"
	"\130\302\101\005\264\363\147\013\165\274\271\005\372\302\071\272"
	"\112\254\212\257\256\170\220\301\130\001\050\114\237\071\370\343"
	"\133\267\356\061\167\035\172\224\011\364\234\326\131\012\223\354"
	"\301\226\027\077\111\341\341\161\337\346\043\321\265\244\226\174"
	"\067\342\353\161\146\223\372\024\271\213\372\253\300\063\174\150"
	"\024\271\330\261\116\227\237\013\307\014\223\061\335\310\344\123"
	"\144\154\207\261\340\167\041\005\277\377\143\324\213\177\274\243"
	"\161\230\146\104\223\356\174\212\052\347\165\233\326\132\231\007"
	"\334\102\075\167\110\156\354\101\311\065\042\027\223\336\262\143"
	"\173\227\156\226\066\163\372\205\177\031\065\314\305\262\121\201"
	"\360\116\103\235\372\061\364\107\304\167\362\126\263\061\350\261"
	"\016\057\276\143\042\137\142\130\014\252\161\231\306\237\321\043"
	"\375\103\064\357\220\036\056\303\153\227\355\212\076\003\132\037"
	"\167\354\204\377\072\170\055\145\353\345\116\255\040\114\250\362"
	"\173\142\236\346\150\361\006\206\276\154\246\253\206\040\007\113"
	"\370\104\113\261\006\033\120\003\305\014\157\127\356\220\103\071"
	"\144\017\201\017\172\214\110\043\022\110\040\155\065\201\155\075"
	"\157\115\014\102\005\224\326\357\234\351\106\075\167\252\305\230"
	"\364\164\204\043\045\137\242\337\374\335\262\007\117\233\123\141"
	"\276\273\370\021\060\112\233\160\076\320\000\251\141\063\324\254"
	"\030\226\227\036\264\164\032\012\025\131\023\035\207\243\227\114"
	"\330\041\236\015\110\314\324\140\037\247\172\255\313\245\060\052"
	"\251\330\032\356\220\021\360\344\110\146\007\154\075\376\261\151"
	"\112\010\024\252\203\330\354\211\026\235\046\154\313\302\357\222"
	"\010\257\330\116\161\203\332\063\012\016\267\313\210\143\043\300"
	"\142\045\327\253\164\365\346\252\116\215\375\307\141\002\023\223"
	"\070\066\015\255\024\043\061\076\011\270\202\312\374\114\041\216"
	"\352\216\121\022\156\072\244\041\036\217\136\136\061\076\216\144"
	"\246\132\006\304\267\114\300\200\010\341\302\146\116\237\237\020"
	"\327\257\364\252\314\206\351\301\276\004\013\337\215\224\167\214"
	"\337\026\070\254\126\021\140\121\021\337\347\151\216\007\343\141"
	"\315\205\244\354\122\070\070\060\114\212\350\037\317\061\325\337"
	"\204\261\133\126\041\255\174\371\060\145\036\350\172\331\222\343"
	"\203\334\255\245\054\025\003\210\334\063\015\015\270\064\002\314"
	"\232\331\201\236\151\347\111\337\175\020\075\215\360\332\135\010"
	"\326\127\234\054\355\260\003\301\225\275\176\157\014\332\057\022"
	"\361\165\173\061\006\015\015\003\023\337\147\065\033\054\032\206"
	"\133\230\314\214\077\136\367\276\220\232\326\234\261\263\370\212"
	"\246\377\155\026\326\264\217\377\156\235\216\110\074\033\233\073"
	"\174\067\177\173\336\026\226\111\222\077\364\242\113\106\152\201"
	"\140\035\134\013\311\146\273\323\005\102\377\343\017\116\212\363"
	"\222\023\245\306\334\270\301\375\036\253\246\136\125\145\011\202"
	"\362\105\275\265\112\313\141\242\075\346\075\021\054\260\373\027"
	"\344\016\161\154\171\025\013\073\076\020\267\073\077\260\334\204"
	"\141\301\167\065\022\134\127\201\177\043\252\017\161\316\004\005"
	"\017\071\312\127\273\300\267\051\052\122\273\221\261\126\340\241"
	"\322\356\360\220\141\074\005\216\242\004\013\325\001\341\227\275"
	"\215\360\210\242\124\273\270\305\022\236\134\160\343\000\332\107"
	"\220\353\326\324\252\167\127\157\053\042\345\167\373\141\003\372"
	"\000\127\165\066\360\327\310\346\003\105\166\103\231\047\242\116"
	"\077\042\352\000\320\364\227\065\036\162\360\154\162\175\221\101"
	"\361\340\117\266\373\166\307\376\360\114\175\322\245\112\304\204"
	"\063\002\041\137\336\123\144\307\044\257\257\071\137\342\027\201"
	"\321\344\355\155\174\116\175\064\127\106\231\211\276\132\236\206"
	"\261\332\346\114\041\126\375\214\361\335\344\304\356\134\110\042"
	"\153\002\364\277\174\275\032\272\213\244\155\360\261\072\150\373"
	"\317\322\105\026\336\127\162\203\171\217\200\317\301\066\370\211"
	"\125\016\103\301\067\362\114\022\300\036\202\051\056\362\343\144"
	"\374\202\051\353\300\306\363\230\230\333\043\161\002\264\065\164"
	"\246\311\175\174\203\223\120\232\331\063\214\023\317\037\372\060"
	"\204\217\201\163\212\267\263\167\232\132\032\175\154\046\336\270"
	"\255\372\364\137\174\102\352\045\141\042\111\205\171\233\374\221"
	"\343\130\151\257\067\134\213\022\222\250\052\217\314\077\026\273"
	"\117\114\020\267\145\011\173\143\262\271\351\126\007\044\112\231"
	"\275\020\070\115\325\020\016\267\053\372\042\334\137\352\211\114"
	"\022\014\224\155\164\022\351\272\066\277\163\160\002\324\213\027"
	"\361\014\362\337\003\027\336\251\202\102\216\136\057\033\065\174"
	"\243\167\100\371\171\034\320\345\251\360\225\224\162\274\346\234"
	"\373\364\255\337\352\211\204\277\062\077\113\006\132\270\317\057"
	"\214\201\157\165\171\075\165\341\141\375\276\116\210\224\121\054"
	"\342\201\204\132\215\101\235\003\106\277\255\105\377\165\237\316"
	"\004\355\024\121\023\354\005\033\202\161\366\141\372\204\330\036"
	"\272\041\001\007\010\262\161\157\050\141\210\122\367\262\222\342"
	"\076\207\256\230\323\046\265\257\014\376\122\270\066\221\173\165"
	"\357\372\141\115\315\253\211\104\300\257\332\022\334\252\313\146"
	"\370\026\364\022\015\016\102\041\132\352\377\100\347\222\154\245"
	"\043\357\362\007\144\100\031\144\047\130\073\014\016\120\347\373"
	"\035\151\002\073\173\012\366\146\362\132\244\347\247\074\040\223"
	"\014\000\116\022\303\173\047\072\202\043\043\026\151\013\315\136"
	"\151\114\055\117\326\201\253\370\333\117\313\202\367\352\216\257"
	"\076\370\243\033\147\264\143\105\316\141\114\020\144\220\137\237"
	"\117\027\026\126\023\130\100\074\374\153\120\046\176\066\125\256"
	"\167\014\157\233\140\342\251\277\217\315\115\352\166\076\373\022"
	"\335\360\000\347\107\113\220\234\131\160\053\050\212\134\212\160"
	"\364\267\215\050\063\023\262\274\372\323\200\141\124\267\306\026"
	"\032\344\051\251\157\264\025\306\301\215\146\022\247\157\014\006"
	"\304\313\236\305\355\222\270\252\237\266\033\313\260\213\070\217"
	"\101\142\326\204\124\151\171\250\071\164\111\357\236\116\177\160"
	"\265\061\077\116\127\265\067\124\236\145\356\361\200\305\000\222"
	"\324\247\151\126\250\164\132\356\222\033\224\141\022\162\036\355"
	"\160\065\306\041\276\120\137\336\364\114\357\170\301\022\157\146"
	"\240\330\225\246\131\070\342\237\106\130\203\035\357\123\024\377"
	"\236\112\001\366\001\370\043\223\012\045\030\004\374\120\144\154"
	"\353\316\245\164\102\065\333\124\022\105\175\101\344\247\112\253"
	"\253\023\040\212\022\122\256\037\052\026\172\034\021\140\145\361"
	"\143\151\302\131\051\243\217\325\104\216\320\314\320\033\272\343"
	"\304\254\076\223\215\373\376\376\120\120\237\333\166\331\243\233"
	"\102\256\335\334\004\365\237\250\041\232\237\302\052\236\046\114"
	"\357\131\000\257\146\051\363\243\234\255\374\355\250\057\140\067"
	"\044\222\176\171\134\266\334\370\267\300\005\110\056\165\106\376"
	"\222\015\123\305\120\227\054\272\160\316\367\045\334\013\166\171"
	"\042\256\074\051\276\033\060\113\066\377\132\165\121\335\236\046"
	"\354\220\124\064\353\040\041\104\241\345\251\101\226\256\263\245"
	"\047\053\157\100\354\273\157\261\174\140\115\061\151\323\040\315"
	"\130\024\236\326\341\315\052\330\351\027\272\322\165\221\046\227"
	"\346\334\163\047\054\320\340\200\016\222\237\300\215\152\251\027"
	"\243\136\377\252\233\307\026\345\331\360\130\006\301\321\344\374"
	"\352\013\044\272\007\277\332\317\202\202\031\003\042\175\210\065"
	"\140\130\120\024\366\370\113\314\061\214\134\364\105\237\035\024"
	"\243\207\110\327\231\163\035\157\260\246\051\234\256\175\264\021"
	"\060\047\175\156\020\347\230\073\152\025\116\062\222\024\304\365"
	"\010\345\124\047\175\023\121\256\325\362\107\353\044\265\236\246"
	"\113\217\356\174\217\215\314\364\234\344\264\255\304\343\313\020"
	"\144\033\160\222\125\150\107\253\324\056\071\160\120\126\264\253"
	"\021\005\064\164\361\017\277\016\245\060\021\316\232\001\046\023"
	"\023\233\067\111\273\364\144\121\100\161\042\124\122\232\141\134"
	"\246\036\151\011\026\367\141\212\223\066\033\173\033\252\240\337"
	"\003\167\172\371\325\016\362\056\236\373\071\154\336\224\074\273"
	"\305\273\150\310\361\177\242\325\175\341\352\067\076\331\025\202"
	"\246\370\215\067\311\217\203\370\131\145\244\112\244\003\071\027"
	"\056\067\251\374\040\154\262\360\306\017\165\161\314\043\026\045"
	"\175\370\362\050\161\323\114\266\212\006\200\200\037\346\211\154"
	"\027\157\060\364\055\073\274\143\341\251\100\347\252\012\340\255"
	"\246\275\234\113\320\147\265\355\251\117\376\317\247\137\046\141"
	"\050\166\200\333\333\200\120\322\163\045\364\035\270\044\266\207"
	"\074\113\331\322\347\125\106\002\244\105\321\113\244\367\254\315"
	"\156\055\251\111\255\371\034\041\036\020\077\326\064\366\136\161"
	"\101\067\103\051\215\212\053\061\317\375\174\163\365\051\101\143"
	"\126\352\254\004\344\311\045\002\331\144\331\016\132\070\200\234"
	"\157\303\306\374\115\362\056\035\357\253\221\344\324\322\110\052"
	"\275\365\057\241\276\124\244\230\271\176\246\024\266\046\260\046"
	"\352\167\043\070\151\121\125\131\374\346\076\321\271\206\374\166"
	"\173\053\030\071\200\274\321\071\072\170\116\361\237\376\027\212"
	"\166\072\302\337\214\030\070\211\377\167\132\270\375\126\057\170"
	"\202\110\262\002\004\204\074\077\375\212\061\234\211\110\046\377"
	"\203\351\337\020\002\030\231\001\217\363\272\214\112\352\005\314"
	"\062\270\317\067\074\014\167\072\227\250\326\040\360\375\040\164"
	"\347\377\204\351\030\035\353\247\021\246\064\133\221\071\050\303"
	"\362\370\373\057\004\162\151\234\032\077\274\013\075\335\200\044"
	"\335\004\016\365\042\372\234\063\240\320\217\061\012\270\365\374"
	"\261\361\053\266\143\225\122\176\325\017\212\022\354\012\067\311"
	"\017\105\276\061\077\133\145\340\054\365\022\066\256\010\063\140"
	"\371\137\026\135\365\150\333\312\170\146\334\144\161\024\056\200"
	"\131\355\262\231\110\030\171\165\016\214\254\274\224\340\034\215"
	"\077\063\352\064\234\306\377\024\054\333\171\235\360\247\036\111"
	"\224\320\343\335\351\135\123\367\351\377\264\176\337\321\013\037"
	"\004\366\124\241\274\123\265\351\057\056\207\037\326\245\151\153"
	"\166\115\111\137\252\234\126\224\234\013\022\173\334\036\233\341"
	"\024\357\202\321\103\067\272\163\146\101\222\075\347\374\250\135"
	"\111\362\274\364\216\023\211\052\036\234\246\373\272\101\334\317"
	"\061\136\240\164\226\133\350\375\234\172\073\204\167\343\341\301"
	"\325\236\265\144\261\077\217\320\333\065\313\226\167\250\145\250"
	"\007\005\035\236\141\005\234\376\200\327\202\367\272\143\271\220"
	"\001\157\365\263\256\204\204\212\271\120\040\061\370\205\331\000"
	"\213\367\236\354\374\072\352\175\021\154\165\314\320\056\135\321"
	"\235\122\205\113\327\011\325\221\132\366\302\122\173\233\122\006"
	"\222\361\363\217\053\335\014\075\112\201\011\032\257\147\354\115"
	"\271\161\231\221\173\157\042\325\145\344\050\340\200\173\347\022"
	"\155\332\242\230\270\256\326\003\060\340\035\337\107\011\055\001"
	"\173\306\222\367\065\264\315\232\230\366\173\030\161\142\053\336"
	"\075\315\167\366\174\115\371\254\056\027\214\165\041\271\166\234"
	"\200\010\224\265\275\142\120\126\130\313\156\312\056\232\251\154"
	"\150\040\142\344\156\134\221\234\163\035\022\224\327\210\061\127"
	"\221\306\014\116\050\134\244\200\050\023\112\126\256\363\302\026"
	"\024\045\373\203\201\214\040\365\252\062\212\201\273\273\330\114"
	"\201\345\233\251\102\100\052\152\123\165\300\002\151\203\030\176"
	"\250\024\001\052\241\042\037\113\125\251\314\020\145\245\135\347"
	"\212\371\220\314\071\273\066\215\060\367\217\231\172\250\027\043"
	"\274\031\115\135\073\155\250\220\027\165\241\174\032\376\143\245"
	"\370\364\161\061\257\250\276\340\237\116\171\032\366\221\075\262"
	"\252\212\020\346\370\271\167\017\057\030\214\111\027\360\357\017"
	"\345\141\101\225\011\377\165\251\115\357\303\104\200\001\367\053"
	"\214\007\021\204\301\211\224\360\241\040\072\271\021\051\311\366"
	"\212\012\213\224\011\000\075\127\360\001\233\160\002\222\234\216"
	"\232\256\023\133\067\247\113\331\310\206\222\331\257\133\317\072"
	"\145\132\316\157\133\014\307\113\016\143\274\020\366\131\237\220"
	"\007\263\354\077\132\070\030\042\276\253\373\156\007\313\250\155"
	"\046\166\335\202\203\244\315\221\007\212\241\376\343\101\216\353"
	"\364\173\052\117\264\103\161\162\357\155\340\366\071\211\143\137"
	"\377\100\341\202\345\257\023\355\072\265\353\036\367\172\011\354"
	"\365\064\073\252\167\255\034\146\033\375\135\124\206\301\263\206"
	"\002\225\011\347\104\035\324\176\323\300\234\312\072\246\267\060"
	"\332\362\332\122\240\367\271\273\365\026\020\174\327\304\003\331"
	"\131\014\301\235\052\226\034\375\126\270\310\221\137\177\302\071"
	"\162\234\214\022\224\105\316\211\134\337\006\063\243\011\015\374"
	"\026\317\232\100\145\266\075\274\157\005\115\316\205\017\010\367"
	"\254\224\012\101\331\331\313\065\270\321\151\134\333\167\130\361"
	"\106\363\061\254\251\157\150\031\165\266\350\372\305\361\362\162"
	"\205\375\264\137\326\177\225\217\121\377\353\054\166\104\035\275"
	"\067\116\151\341\276\321\373\063\210\343\055\116\324\037\300\132"
	"\034\164\271\363\364\117\202\105\116\156\162\304\262\217\201\351"
	"\336\353\313\234\275\306\317\105\251\375\223\176\035\123\330\072"
	"\310\222\055\275\341\260\003\057\036\165\364\321"
#define      pswd_z	256
#define      pswd	((&data[7837]))
	"\343\141\206\200\036\114\120\143\366\115\366\164\153\112\115\245"
	"\023\340\323\320\302\203\324\361\242\111\346\164\116\345\240\220"
	"\333\033\213\112\316\145\167\372\365\167\113\053\004\177\074\215"
	"\325\123\044\144\206\030\052\142\274\221\324\074\167\164\314\122"
	"\217\130\235\136\275\024\131\263\213\244\336\220\044\032\035\372"
	"\156\102\137\365\133\211\130\027\033\054\124\222\241\041\345\061"
	"\171\203\217\067\227\350\352\043\215\311\264\262\344\321\254\123"
	"\024\013\111\157\224\241\207\260\316\333\103\157\374\050\240\166"
	"\254\060\255\104\031\230\147\247\141\034\131\106\356\005\231\002"
	"\021\342\161\246\204\370\126\122\324\231\301\321\302\142\107\156"
	"\223\364\262\254\215\032\123\356\067\255\065\045\262\316\047\304"
	"\261\231\152\065\222\300\210\146\132\112\070\034\255\177\213\100"
	"\164\076\354\001\131\100\360\220\356\045\265\241\364\335\145\245"
	"\166\317\333\011\220\144\160\353\256\250\010\133\050\223\233\234"
	"\322\210\235\053\311\216\274\267\263\161\130\250\116\275\116\305"
	"\215\051\317\036\216\077\011\074\350\021\230\020\245\064\255\167"
	"\274\113\243\206\331\137\076\215\320\226\065\037\124\203\345\342"
	"\255\265\000\073\365\012\170\335\034\020\356\301\105\134\057\062"
	"\275\265\263\334\001\003\077\367\121\066\154\275\200\272\142\224"
	"\232\065\145\134\271\071\116\134\202\065\320\321\221\377\004\117"
	"\264\267\053\266\273\153\256\015\241\032\312\042"
#define      tst2_z	19
#define      tst2	((&data[8140]))
	"\056\072\222\032\005\313\115\070\366\100\213\100\025\041\327\057"
	"\333\162\111\157\142\033"
#define      opts_z	1
#define      opts	((&data[8162]))
	"\351"
#define      msg1_z	65
#define      msg1	((&data[8171]))
	"\120\111\251\342\111\256\061\375\345\250\050\367\346\234\210\140"
	"\220\262\341\255\265\162\014\130\130\075\107\222\172\212\326\104"
	"\060\146\304\124\363\073\302\073\162\300\103\363\372\173\335\134"
	"\306\365\001\312\373\004\170\056\351\071\374\037\025\011\367\220"
	"\014\067\373\221\226\300\235\177\336\145\135\264\041\310\142\056"
	"\151\175\371\213\122\046\102"
#define      chk2_z	19
#define      chk2	((&data[8252]))
	"\216\245\273\244\301\333\275\107\350\372\101\217\177\203\375\277"
	"\360\125\272\010\115\263"
#define      rlax_z	1
#define      rlax	((&data[8272]))
	"\207"
#define      date_z	1
#define      date	((&data[8273]))
	"\145"
#define      shll_z	10
#define      shll	((&data[8276]))
	"\017\257\102\161\035\022\373\252\133\131\071\147\111\154"
#define      xecc_z	15
#define      xecc	((&data[8289]))
	"\306\317\313\364\317\210\220\162\044\021\114\361\364\242\151\143"
#define      inlo_z	3
#define      inlo	((&data[8304]))
	"\227\060\274"
#define      chk1_z	22
#define      chk1	((&data[8307]))
	"\060\054\171\031\155\057\360\236\120\163\343\277\335\116\037\323"
	"\140\345\125\210\105\152\271\155\130"
#define      lsto_z	1
#define      lsto	((&data[8332]))
	"\034"
#define      tst1_z	22
#define      tst1	((&data[8335]))
	"\010\012\243\322\163\015\354\002\127\201\077\201\051\103\142\224"
	"\035\032\175\251\335\232\124\325\214\161\100"/* End of data[] */;
#define      hide_z	4096
#define SETUID 0	/* Define as 1 to call setuid(0) at start of script */
#define DEBUGEXEC	0	/* Define as 1 to debug execvp calls */
#define TRACEABLE	1	/* Define as 1 to enable ptrace the executable */
#define HARDENING	0	/* Define as 1 to disable ptrace/dump the executable */
#define BUSYBOXON	0	/* Define as 1 to enable work with busybox */

#if HARDENING
static const char * shc_x[] = {
"/*",
" * Copyright 2019 - Intika <intika@librefox.org>",
" * Replace ******** with secret read from fd 21",
" * Also change arguments location of sub commands (sh script commands)",
" * gcc -Wall -fpic -shared -o shc_secret.so shc_secret.c -ldl",
" */",
"",
"#define _GNU_SOURCE /* needed to get RTLD_NEXT defined in dlfcn.h */",
"#define PLACEHOLDER \"********\"",
"#include <dlfcn.h>",
"#include <stdlib.h>",
"#include <string.h>",
"#include <unistd.h>",
"#include <stdio.h>",
"#include <signal.h>",
"",
"static char secret[128000]; //max size",
"typedef int (*pfi)(int, char **, char **);",
"static pfi real_main;",
"",
"// copy argv to new location",
"char **copyargs(int argc, char** argv){",
"    char **newargv = malloc((argc+1)*sizeof(*argv));",
"    char *from,*to;",
"    int i,len;",
"",
"    for(i = 0; i<argc; i++){",
"        from = argv[i];",
"        len = strlen(from)+1;",
"        to = malloc(len);",
"        memcpy(to,from,len);",
"        // zap old argv space",
"        memset(from,'\\0',len);",
"        newargv[i] = to;",
"        argv[i] = 0;",
"    }",
"    newargv[argc] = 0;",
"    return newargv;",
"}",
"",
"static int mymain(int argc, char** argv, char** env) {",
"    //fprintf(stderr, \"Inject main argc = %d\\n\", argc);",
"    return real_main(argc, copyargs(argc,argv), env);",
"}",
"",
"int __libc_start_main(int (*main) (int, char**, char**),",
"                      int argc,",
"                      char **argv,",
"                      void (*init) (void),",
"                      void (*fini)(void),",
"                      void (*rtld_fini)(void),",
"                      void (*stack_end)){",
"    static int (*real___libc_start_main)() = NULL;",
"    int n;",
"",
"    if (!real___libc_start_main) {",
"        real___libc_start_main = dlsym(RTLD_NEXT, \"__libc_start_main\");",
"        if (!real___libc_start_main) abort();",
"    }",
"",
"    n = read(21, secret, sizeof(secret));",
"    if (n > 0) {",
"      int i;",
"",
"    if (secret[n - 1] == '\\n') secret[--n] = '\\0';",
"    for (i = 1; i < argc; i++)",
"        if (strcmp(argv[i], PLACEHOLDER) == 0)",
"          argv[i] = secret;",
"    }",
"",
"    real_main = main;",
"",
"    return real___libc_start_main(mymain, argc, argv, init, fini, rtld_fini, stack_end);",
"}",
"",
0};
#endif /* HARDENING */

/* rtc.c */

#include <sys/stat.h>
#include <sys/types.h>

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

/* 'Alleged RC4' */

static unsigned char stte[256], indx, jndx, kndx;

/*
 * Reset arc4 stte. 
 */
void stte_0(void)
{
	indx = jndx = kndx = 0;
	do {
		stte[indx] = indx;
	} while (++indx);
}

/*
 * Set key. Can be used more than once. 
 */
void key(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		do {
			tmp = stte[indx];
			kndx += tmp;
			kndx += ptr[(int)indx % len];
			stte[indx] = stte[kndx];
			stte[kndx] = tmp;
		} while (++indx);
		ptr += 256;
		len -= 256;
	}
}

/*
 * Crypt data. 
 */
void arc4(void * str, int len)
{
	unsigned char tmp, * ptr = (unsigned char *)str;
	while (len > 0) {
		indx++;
		tmp = stte[indx];
		jndx += tmp;
		stte[indx] = stte[jndx];
		stte[jndx] = tmp;
		tmp += stte[indx];
		*ptr ^= stte[tmp];
		ptr++;
		len--;
	}
}

/* End of ARC4 */

#if HARDENING

#include <sys/ptrace.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/prctl.h>
#define PR_SET_PTRACER 0x59616d61

/* Seccomp Sandboxing Init */
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>

#include <sys/types.h>
#include <sys/prctl.h>
#include <sys/syscall.h>
#include <sys/socket.h>

#include <linux/filter.h>
#include <linux/seccomp.h>
#include <linux/audit.h>

#define ArchField offsetof(struct seccomp_data, arch)

#define Allow(syscall) \
    BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, SYS_##syscall, 0, 1), \
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)

struct sock_filter filter[] = {
    /* validate arch */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, ArchField),
    BPF_JUMP( BPF_JMP+BPF_JEQ+BPF_K, AUDIT_ARCH_X86_64, 1, 0),
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),

    /* load syscall */
    BPF_STMT(BPF_LD+BPF_W+BPF_ABS, offsetof(struct seccomp_data, nr)),

    /* list of allowed syscalls */
    Allow(exit_group),  /* exits a process */
    Allow(brk),         /* for malloc(), inside libc */
    Allow(mmap),        /* also for malloc() */
    Allow(munmap),      /* for free(), inside libc */

    /* and if we don't match above, die */
    BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_KILL),
};
struct sock_fprog filterprog = {
    .len = sizeof(filter)/sizeof(filter[0]),
    .filter = filter
};

/* Seccomp Sandboxing - Set up the restricted environment */
void seccomp_hardening() {
    if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
        perror("Could not start seccomp:");
        exit(1);
    }
    if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &filterprog) == -1) {
        perror("Could not start seccomp:");
        exit(1);
    }
} 
/* End Seccomp Sandboxing Init */

void shc_x_file() {
    FILE *fp;
    int line = 0;

    if ((fp = fopen("/tmp/shc_x.c", "w")) == NULL ) {exit(1); exit(1);}
    for (line = 0; shc_x[line]; line++)	fprintf(fp, "%s\n", shc_x[line]);
    fflush(fp);fclose(fp);
}

int make() {
	char * cc, * cflags, * ldflags;
    char cmd[4096];

	cc = getenv("CC");
	if (!cc) cc = "cc";

	sprintf(cmd, "%s %s -o %s %s", cc, "-Wall -fpic -shared", "/tmp/shc_x.so", "/tmp/shc_x.c -ldl");
	if (system(cmd)) {remove("/tmp/shc_x.c"); return -1;}
	remove("/tmp/shc_x.c"); return 0;
}

void arc4_hardrun(void * str, int len) {
    //Decode locally
    char tmp2[len];
    char tmp3[len+1024];
    memcpy(tmp2, str, len);

	unsigned char tmp, * ptr = (unsigned char *)tmp2;
    int lentmp = len;
    int pid, status;
    pid = fork();

    shc_x_file();
    if (make()) {exit(1);}

    setenv("LD_PRELOAD","/tmp/shc_x.so",1);

    if(pid==0) {

        //Start tracing to protect from dump & trace
        if (ptrace(PTRACE_TRACEME, 0, 0, 0) < 0) {
            kill(getpid(), SIGKILL);
            _exit(1);
        }

        //Decode Bash
        while (len > 0) {
            indx++;
            tmp = stte[indx];
            jndx += tmp;
            stte[indx] = stte[jndx];
            stte[jndx] = tmp;
            tmp += stte[indx];
            *ptr ^= stte[tmp];
            ptr++;
            len--;
        }

        //Do the magic
        sprintf(tmp3, "%s %s", "'********' 21<<<", tmp2);

        //Exec bash script //fork execl with 'sh -c'
        system(tmp2);

        //Empty script variable
        memcpy(tmp2, str, lentmp);

        //Clean temp
        remove("/tmp/shc_x.so");

        //Sinal to detach ptrace
        ptrace(PTRACE_DETACH, 0, 0, 0);
        exit(0);
    }
    else {wait(&status);}

    /* Seccomp Sandboxing - Start */
    seccomp_hardening();

    exit(0);
}
#endif /* HARDENING */

/*
 * Key with file invariants. 
 */
int key_with_file(char * file)
{
	struct stat statf[1];
	struct stat control[1];

	if (stat(file, statf) < 0)
		return -1;

	/* Turn on stable fields */
	memset(control, 0, sizeof(control));
	control->st_ino = statf->st_ino;
	control->st_dev = statf->st_dev;
	control->st_rdev = statf->st_rdev;
	control->st_uid = statf->st_uid;
	control->st_gid = statf->st_gid;
	control->st_size = statf->st_size;
	control->st_mtime = statf->st_mtime;
	control->st_ctime = statf->st_ctime;
	key(control, sizeof(control));
	return 0;
}

#if DEBUGEXEC
void debugexec(char * sh11, int argc, char ** argv)
{
	int i;
	fprintf(stderr, "shll=%s\n", sh11 ? sh11 : "<null>");
	fprintf(stderr, "argc=%d\n", argc);
	if (!argv) {
		fprintf(stderr, "argv=<null>\n");
	} else { 
		for (i = 0; i <= argc ; i++)
			fprintf(stderr, "argv[%d]=%.60s\n", i, argv[i] ? argv[i] : "<null>");
	}
}
#endif /* DEBUGEXEC */

void rmarg(char ** argv, char * arg)
{
	for (; argv && *argv && *argv != arg; argv++);
	for (; argv && *argv; argv++)
		*argv = argv[1];
}

void chkenv_end(void);

int chkenv(int argc)
{
	char buff[512];
	unsigned long mask, m;
	int l, a, c;
	char * string;
	extern char ** environ;

	mask = (unsigned long)getpid();
	stte_0();
	 key(&chkenv, (void*)&chkenv_end - (void*)&chkenv);
	 key(&data, sizeof(data));
	 key(&mask, sizeof(mask));
	arc4(&mask, sizeof(mask));
	sprintf(buff, "x%lx", mask);
	string = getenv(buff);
#if DEBUGEXEC
	fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>");
#endif
	l = strlen(buff);
	if (!string) {
		/* 1st */
		sprintf(&buff[l], "=%lu %d", mask, argc);
		putenv(strdup(buff));
		return 0;
	}
	c = sscanf(string, "%lu %d%c", &m, &a, buff);
	if (c == 2 && m == mask) {
		/* 3rd */
		rmarg(environ, &string[-l - 1]);
		return 1 + (argc - a);
	}
	return -1;
}

void chkenv_end(void){}

#if HARDENING

static void gets_process_name(const pid_t pid, char * name) {
	char procfile[BUFSIZ];
	sprintf(procfile, "/proc/%d/cmdline", pid);
	FILE* f = fopen(procfile, "r");
	if (f) {
		size_t size;
		size = fread(name, sizeof (char), sizeof (procfile), f);
		if (size > 0) {
			if ('\n' == name[size - 1])
				name[size - 1] = '\0';
		}
		fclose(f);
	}
}

void hardening() {
    prctl(PR_SET_DUMPABLE, 0);
    prctl(PR_SET_PTRACER, -1);

    int pid = getppid();
    char name[256] = {0};
    gets_process_name(pid, name);

    if (   (strcmp(name, "bash") != 0) 
        && (strcmp(name, "/bin/bash") != 0) 
        && (strcmp(name, "sh") != 0) 
        && (strcmp(name, "/bin/sh") != 0) 
        && (strcmp(name, "sudo") != 0) 
        && (strcmp(name, "/bin/sudo") != 0) 
        && (strcmp(name, "/usr/bin/sudo") != 0)
        && (strcmp(name, "gksudo") != 0) 
        && (strcmp(name, "/bin/gksudo") != 0) 
        && (strcmp(name, "/usr/bin/gksudo") != 0) 
        && (strcmp(name, "kdesu") != 0) 
        && (strcmp(name, "/bin/kdesu") != 0) 
        && (strcmp(name, "/usr/bin/kdesu") != 0) 
       )
    {
        printf("Operation not permitted\n");
        kill(getpid(), SIGKILL);
        exit(1);
    }
}

#endif /* HARDENING */

#if !TRACEABLE

#define _LINUX_SOURCE_COMPAT
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>

#if !defined(PT_ATTACHEXC) /* New replacement for PT_ATTACH */
   #if !defined(PTRACE_ATTACH) && defined(PT_ATTACH)
       #define PT_ATTACHEXC	PT_ATTACH
   #elif defined(PTRACE_ATTACH)
       #define PT_ATTACHEXC PTRACE_ATTACH
   #endif
#endif

void untraceable(char * argv0)
{
	char proc[80];
	int pid, mine;

	switch(pid = fork()) {
	case  0:
		pid = getppid();
		/* For problematic SunOS ptrace */
#if defined(__FreeBSD__)
		sprintf(proc, "/proc/%d/mem", (int)pid);
#else
		sprintf(proc, "/proc/%d/as",  (int)pid);
#endif
		close(0);
		mine = !open(proc, O_RDWR|O_EXCL);
		if (!mine && errno != EBUSY)
			mine = !ptrace(PT_ATTACHEXC, pid, 0, 0);
		if (mine) {
			kill(pid, SIGCONT);
		} else {
			perror(argv0);
			kill(pid, SIGKILL);
		}
		_exit(mine);
	case -1:
		break;
	default:
		if (pid == waitpid(pid, 0, 0))
			return;
	}
	perror(argv0);
	_exit(1);
}
#endif /* !TRACEABLE */

char * xsh(int argc, char ** argv)
{
	char * scrpt;
	int ret, i, j;
	char ** varg;
	char * me = argv[0];
	if (me == NULL) { me = getenv("_"); }
	if (me == 0) { fprintf(stderr, "E: neither argv[0] nor $_ works."); exit(1); }

	ret = chkenv(argc);
	stte_0();
	 key(pswd, pswd_z);
	arc4(msg1, msg1_z);
	arc4(date, date_z);
	if (date[0] && (atoll(date)<time(NULL)))
		return msg1;
	arc4(shll, shll_z);
	arc4(inlo, inlo_z);
	arc4(xecc, xecc_z);
	arc4(lsto, lsto_z);
	arc4(tst1, tst1_z);
	 key(tst1, tst1_z);
	arc4(chk1, chk1_z);
	if ((chk1_z != tst1_z) || memcmp(tst1, chk1, tst1_z))
		return tst1;
	arc4(msg2, msg2_z);
	if (ret < 0)
		return msg2;
	varg = (char **)calloc(argc + 10, sizeof(char *));
	if (!varg)
		return 0;
	if (ret) {
		arc4(rlax, rlax_z);
		if (!rlax[0] && key_with_file(shll))
			return shll;
		arc4(opts, opts_z);
#if HARDENING
	    arc4_hardrun(text, text_z);
	    exit(0);
       /* Seccomp Sandboxing - Start */
       seccomp_hardening();
#endif
		arc4(text, text_z);
		arc4(tst2, tst2_z);
		 key(tst2, tst2_z);
		arc4(chk2, chk2_z);
		if ((chk2_z != tst2_z) || memcmp(tst2, chk2, tst2_z))
			return tst2;
		/* Prepend hide_z spaces to script text to hide it. */
		scrpt = malloc(hide_z + text_z);
		if (!scrpt)
			return 0;
		memset(scrpt, (int) ' ', hide_z);
		memcpy(&scrpt[hide_z], text, text_z);
	} else {			/* Reexecute */
		if (*xecc) {
			scrpt = malloc(512);
			if (!scrpt)
				return 0;
			sprintf(scrpt, xecc, me);
		} else {
			scrpt = me;
		}
	}
	j = 0;
#if BUSYBOXON
	varg[j++] = "busybox";
	varg[j++] = "sh";
#else
	varg[j++] = argv[0];		/* My own name at execution */
#endif
	if (ret && *opts)
		varg[j++] = opts;	/* Options on 1st line of code */
	if (*inlo)
		varg[j++] = inlo;	/* Option introducing inline code */
	varg[j++] = scrpt;		/* The script itself */
	if (*lsto)
		varg[j++] = lsto;	/* Option meaning last option */
	i = (ret > 1) ? ret : 0;	/* Args numbering correction */
	while (i < argc)
		varg[j++] = argv[i++];	/* Main run-time arguments */
	varg[j] = 0;			/* NULL terminated array */
#if DEBUGEXEC
	debugexec(shll, j, varg);
#endif
	execvp(shll, varg);
	return shll;
}

int main(int argc, char ** argv)
{
#if SETUID
   setuid(0);
#endif
#if DEBUGEXEC
	debugexec("main", argc, argv);
#endif
#if HARDENING
	hardening();
#endif
#if !TRACEABLE
	untraceable(argv[0]);
#endif
	argv[1] = xsh(argc, argv);
	fprintf(stderr, "%s%s%s: %s\n", argv[0],
		errno ? ": " : "",
		errno ? strerror(errno) : "",
		argv[1] ? argv[1] : "<null>"
	);
	return 1;
}
